package com.example.sword;

import java.util.HashMap;

public class Test36 {

    public static void main(String[] args) {
        System.out.println("haha");
    }

    class ListNode{
        int val;
        ListNode next;
        ListNode random;

        public ListNode(int val){
            this.val = val;
        }
    }

    /**
     *     输入两个链表，找出它们的第一个公共结点。（注意因为传入数据是链表，所以错误测试数据的提示是用其他方式显示的，保证传入数据是正确的）
     *
     *     相交的情况是这样：  。。。。。o。。。。。。   从o开始 next  都一样
     *                                。
     *                               。
     *                              。
     *                             。
     */

    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {

//        ListNode node1 = pHead1;
//        ListNode node2 = pHead2;
//
//        while (node1!=node2){
//            if (node1!=null){
//                node1 = node1.next;
//            }else {
//                node1 =pHead2;
//            }
//            if (node2!=null){
//                node2 = node2.next;
//            }else {
//                node2 = pHead1;
//            }
//        }
//        return node1;

        //利用Hashmap
        ListNode node1 = pHead1;
        ListNode node2 = pHead2;

        HashMap<ListNode,Integer> hashMap = new HashMap();


        while(node1!=null){
            hashMap.put(node1,null);
            node1= node1.next;
        }

        while (node2!=null){
            if (hashMap.containsKey(node2)){
                return node2;
            }else {
                node2 = node2.next;
            }
        }

        return null;
    }

}
